题目分析
这个题目应该和43题一起做,都是经典的找规律的题目,这个题目相比上一题简单一些,小伙伴们开动脑筋想一想。
数学规律
我们一般按照位数进行找规律,0-9一位数中,每个数字只有一个字符,共10个字符。而10-99中,这90个两位数中,每个数字都有2个字符,共180个字符。而100-999中,共有900个数字,每个数字有3个字符,共2700个字符。我们将其累加,就可以得到从0开始到k位数的字符总和。如果n大于该数,说明还需要继续叠加,如果n小于等于该数,说明n在k位数之中。
我以2000这个数字举例,0-99有190个字符,0-999有2890个字符,因此2000在100-999之间,而100-999全都是3位数,因此2000-190=1810说明是从100开始的第1810个字符。1810除以3得到的整数位603,即从100开始的第603个数是602,余数为1,说明是602的第1个字符(索引从0开始计算),因此结果为0。时间复杂度为$O(log(n))$,空间复杂度为$O(log(n))$。
1 | class Solution: |
刷题总结
数学题目的规律往往需要按照数字的位数进行找规律,先找一位数,然后找两位数,然后找三位数,往往就可以发现一些规律。这种题不经常出现,但也是小伙伴们必须要掌握的,否则遇到就两眼一抹黑。